When the components of a software system are upgraded, the software system will typically experience some downtime while the upgrade process is carried out. During this downtime, the software system is unavailable to end-users and cannot execute its normal functions/operations. In large-scale software systems such as, e.g., enterprise business applications, the length of downtime necessitated by a given upgrade can be difficult for the system's administrators to accurately predict. This, in turn, makes it challenging for the administrators to plan appropriately for the upgrade event.